' This program exported from BASIC Anywhere Machine (Version [5.2.3].[2023.08.29.21.34]) on 2023.09.16 at 17:07 (Coordinated Universal Time)
' GW-BASIC program by Benito Navarro Martinez
' Ported to BASIC Anywhere Machine by Charlie Veniot
' BIN$ is a reserved function name in BAM, so changed the BIN$ variable to BINNIE$

_INITAUDIO ' BAM's audio uses the web audio API, which needs to be initialized

10 KEY OFF : DEFINT A-Z
20 DEF FNUCASE$(X$)=CHR$(ASC(X$) AND &HDF)
30 DEF FNCOMPLEMENT(X)=-X-1
40 BYTE=0 : DECIMAL=0
50 I=0 : V128=128
60 BINNIE$="        " ' 8 spaces
70 TRUE=(1=1) : FALSE=NOT TRUE
80 BLANK$=SPACE$(40)
90 REM --—
100 REM COLOR CODES FOR BASICA - GWBASIC
110 REM --—
120 YELLOW=14 : REM COLOR CODE FOR YELLOW (AMARILLO)
130 WHITE=15 : REM WHITE (BLANCO BRILLANTE)
140 NORMAL=7
150 REM =======
160 REM MAIN PROGRAM
170 REM ======
180 CLS
190 LOCATE 1,28 : COLOR 12 : PRINT "CONVERSION BINARY TO DECIMAL"
200 LOCATE 6,25 : COLOR 11 : PRINT "87654321";
210 COLOR YELLOW,0
220 LOCATE 7,4 : PRINT "Type a binary number: ";
230 COLOR NORMAL,0
240 LOCATE 24,1 : PRINT BLANK$;
250 LOCATE 7,25 : PRINT BLANK$;
260 LOCATE 9,25 : PRINT BLANK$;
270 COLOR 0,NORMAL
280 LOCATE 7,25,1 'Cursor ON
290 I=0 ' BE SURE I=0
300 WHILE I<8
310   K$=INPUT$(1)
320   IF K$="0" OR K$="1" THEN PRINT K$; : I=I+1 : MID$(BINNIE$,I,1)=K$ ELSE BEEP
330 WEND
' BAM does not have a third parameter for LOCATE -> 340 LOCATE 0 'Cursor Off
350 GOSUB 590 'Convert BINNIE$ to DECIMAL
360 LOCATE  7,33 : PRINT " is " + DECIMAL + " decimal";
  ' Line 360: BAM needs the concatenation sign between print items
  ' BAM needed a space after "is" and before "decimal", so added those
370 LOCATE  9,25
380 BYTE=DECIMAL : GOSUB 510 'DECIMAL TO BINARY
390 PRINT " its complement is ";
400 BYTE=FNCOMPLEMENT(DECIMAL) : GOSUB 510 'DECIMAL TO BINARY
410 COLOR 5,NORMAL
420 LOCATE 24,1 : PRINT "Press (C) to continue, (F) to finish";
430 K$=FNUCASE$(INPUT$(1)) : REM I discovered this way to use the INPUT$ statement
440 IF INSTR("CF",K$)=0 GOTO 430
450 IF K$="C" GOTO 230
460 COLOR NORMAL,0 : CLS
470 END
480 REM -----------—
490 REM CONVERSION DECIMAL TO BINARY
500 REM -----------—
510 FOR I=1 TO 8
520   PRINT USING "#";(BYTE AND V128)/V128;
530   BYTE=(BYTE AND 127)*2
540 NEXT
550 RETURN
560 REM -----------—
570 REM CONVERSION BINARY TO DECIMAL
580 REM -----------—
590 :
600 DECIMAL=0
610 FOR I=8 TO 1 STEP -1
620   IF MID$(BINNIE$,I,1)="1" THEN DECIMAL=DECIMAL+2^(8-I)
630 NEXT
640 RETURN